package com.hadoop.mr2.mutipleoutput;

import java.io.IOException;

import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.output.MultipleOutputs;

/**
 * 利用多输出源，实现的效果：
 * 每个人的信息单独写到一个文件里，
 * 并且文件名可以自定义
 * @author ysq
 *
 */
public class MultipleOutputReducer extends Reducer<Text, Text, Text, Text>{
	//注意，导包导的是org.apache.hadoop.mapreduce.lib.output
	//
	private MultipleOutputs<Text, Text> mos;
	
	@Override
	protected void reduce(Text key, Iterable<Text> values, 
			Reducer<Text, Text, Text, Text>.Context context)
			throws IOException, InterruptedException {
		for(Text value:values){
			if(key.toString().equals("jary")){
				mos.write("jaryfile", key, value);
			}else if(key.toString().equals("rose")){
				mos.write("rosefile", key, value);
			}else{
				mos.write("tomfile",key,value);
			}
		}
		
		
	}
	@Override
	protected void setup(Reducer<Text, Text, Text, Text>.Context context) throws IOException, InterruptedException {
		mos=new MultipleOutputs<Text,Text>(context);
	}

}
